home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
PASCAL
/
0195.ZIP
/
QUEUE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1984-12-17
|
2KB
|
60 lines
{@@@@@@@@@@@ copyright (C) 1984 by Neil J. Rubenking @@@@@@@@@@@@@@@@@@@@@@@@
The purchaser of these procedures and functions may include them in COMPILED
programs freely, but may not sell or give away the source text.
This program is a simple demo of the use of POINTERS to produce
a QUEUE. Please note that the amount of memory set aside for
the QUEUE is ZERO. As each item is added, a chunk of memory is
devoted to it. This is very often much more efficient than
an ARRAY, which must be declared to be a specific size.
}
{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
type
ItemType = array[1..1016] of byte;
{$I queue.lib}
{$I kavail.lib}
{$I getkeys.lib}
var
Klist, Kpointer : ListType;
DummyItem : ItemType;
N, Initial_K : integer;
C, D : char;
{@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}
begin
window(10,1,70,25);
ClrScr;
WriteLn('This program shows the effect of adding items to a queue.');
WriteLn('After each addition, it shows the memory available in K');
WriteLn('Since each item is one K in size (1016 bytes of data and');
WriteLn('8 bytes for the pointer), additions are clearly visible.');
WriteLn(' Each time you press a key, an item will be added. To');
WriteLn('stop adding and dispose of all the items, press <Esc>');
WriteLn;
Initial_K := K_Available;
WriteLn('You start with ',K_available,'K available.');
window(10,10,70,25);
for N := 1 to 1016 do
DummyItem[N] := N and $00FF; { I have heard that for reducing an }
{ integer to a byte, "and $00FF" is }
{ much faster than "mod 256". }
N := 0;
repeat
GetKeys(C,D);
N := N + 1;
AddItem(DummyItem,KList,KPointer);
WriteLn('Added ',N,' items. ',K_available,'K available.');
until (C = #27) and (D = #0);
WriteLn;
WriteLn('You started with ',Initial_K,'K bytes.');
WriteLn('After adding ',N,' items, you have ',K_available,'K bytes.');
WriteLn;
DisposeAll(KList);
WriteLn('I just DISPOSEd of the list. You have ',K_available,'K bytes.');
end.